#include <iostream>
using namespace std;
class person1
{

public:
    void showperson1()
    {
        cout << "调用类person1的成员函数" << endl;
    }
};
class person2
{

public:
    void showperson2()
    {
        cout << "调用类person2的成员函数" << endl;
    }
};

template <class T>
class person
{
public:
    T object; //这里并不知道object的类型,也就不能明确调用成员函数
    void test1()
    {
        object.showperson1();
    }

    void test2()
    {
        object.showperson2();
    }
};

int main()
{
    person<person1> pp; //创建类模板的无参对象  ，同时确定了person类对象pp的成员中，T被替换为person1  T object 是用类创建对象
    //创建对象的同时调用构造函数
    pp.test1();
    pp.test2(); //报错person1 中没有showperson2()
    return 0;
}

//person创建了对象pp,指定了模板参数列表中T的值是person1类类型的，object是person1的对象
//只有当T的类型确定之后才会调用类模板中的成员函数  showperson1();
